#include<stdio.h>
#include "ledTest.h"
#include "keyTest.h"
#include "usartTest.h"
#include "nvicTest.h"
#include "string.h"
#include "dmaTest.h"
#include "spiTest.h"
#include "ssd1619.h"

//PA13-DIO PA14-CLK

#define BUFFER_SIZE 100

uint8_t tx_buf[BUFFER_SIZE];
uint8_t rx_buf[BUFFER_SIZE];
volatile uint32_t tx_index = 0, rx_index = 0;

#if 1       
//标准库需要的支持函数                 
struct __FILE 
{ 
	int handle; 

}; 

FILE __stdout;       
//定义_sys_exit()以避免使用半主机模式    
void _sys_exit(int x) 
{ 
	x = x; 
} 
//重定义fputc函数 
int fputc(int ch, FILE *f)
{
  while(usart_flag_get(USART1, USART_TDBE_FLAG)== RESET);
  usart_data_transmit(USART1,ch);
  return ch;
}

int fgetc(FILE *f)
{
  uint8_t ch = 0;
  while(usart_flag_get(USART1, USART_RDBF_FLAG) == RESET);
  ch=usart_data_receive(USART1);
  return ch;
}
#endif 

 


int main(void)
{

    system_clock_config();
    delay_init();
    // led_gpio_init(GPIOC,GPIO_PINS_13|GPIO_PINS_14|GPIO_PINS_15,CRM_GPIOC_PERIPH_CLOCK); // 初始化并拉低
    led_gpio_init(GPIOB,GPIO_PINS_9,CRM_GPIOB_PERIPH_CLOCK);
        GPIOB->clr = GPIO_PINS_9; //拉低
    // GPIOC->clr = GPIO_PINS_13; //拉低
    //  GPIOC->clr = GPIO_PINS_14; //拉低
    //   GPIOC->clr = GPIO_PINS_15; //拉低
    
    /*外部中断实现按键*/ 
    // KeyInit();
    // exint_Ukey_init(); // 中断触发按键

    /*实现串口打印*/ 
    uart_print_init(115200);
    // sta=gpio_input_data_bit_read(GPIOB, GPIO_PINS_9);
    // printf("1111\r\n");
    // printf("PB:%d\r\n",sta);

    /*实现串口中断接收控制LED灯*/ 
    // usart1_gpio_init();

    /*实现串口+DMA的空闲中断*/
    // usart1_dma_gpio_init();
    // at32_dma1_init();

    /*实现SPI+DMA*/
    // spi_gpio_init();
    // at32_dma1_init();


    /*实现SPI1驱动ssd1619*/
    spi_lcd_gpio_init();
    LCD_Init(1);

    while(1){
      LCD_Clear(0xffff);
      delay_ms(300);
      LCD_Clear(0x0000);
      GPIOB->clr = GPIO_PINS_9; //拉低
      delay_ms(300);
      GPIOB->scr = GPIO_PINS_9; //拉低
      delay_ms(300);
    }

}






//     //pin分为模块管脚与GPIO ->GPIO复用,就是GPIO为内置外设的功能引脚
//     //比如 PA9 或者作为串口接收引脚
//     //看数据手册

//     //复用配置 看RM手册 150 复用功能配置信息


//     // uint8_t key = 0;  
//     // led_gpio_init(GPIOC,GPIO_PINS_13|GPIO_PINS_14|GPIO_PINS_15,CRM_GPIOC_PERIPH_CLOCK); // 初始化并拉低
//     // led_gpio_init(GPIOA,GPIO_PINS_6,CRM_GPIOA_PERIPH_CLOCK)
//     //PA9-TX PA10-RX USART1

        
        // TurnOn1Led(GPIO_PINS_15); // 15 D64
        // delay_ms(300);
        // flashLed(GPIOD,GPIO_PINS_13);// run
        // printf("test a gpio\r\n");
        // TurnOnAllLed();
        // // 将GPIO作为输入
        // key=KeyScan(); //按键是0
        // key1=gpio_input_data_bit_read(GPIOA, GPIO_PINS_0);
        // printf("KEY_status_while: %u\r\n",key1);

        
        // if(key==1){
        // //   flashLed(GPIOC,GPIO_PINS_13);
        // //怎么实现按键按下去后一直是这个模式呢？
        // //能不能连续扫描两次？ 
        //  flashAllLedInTurn();

        // }

    